]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
sessionMode: Add statusArea property
authorFlorian Müllner <fmuellner@gnome.org>
Thu, 17 May 2012 14:09:02 +0000 (16:09 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 22 May 2012 17:42:28 +0000 (19:42 +0200)
Add a sessionMode.statusArea property, which specifies both the order
and shell implementation of the status area items for the mode.

https://bugzilla.gnome.org/show_bug.cgi?id=676156

js/ui/panel.js
js/ui/sessionMode.js

index d712b9e0a981ea881dc7808f772c540681b4a5b2..121dab2a918d77ee52a1c5386fd12699f6cd4782 100644 (file)
@@ -14,7 +14,6 @@ const St = imports.gi.St;
 const Signals = imports.signals;
 const Atk = imports.gi.Atk;
 
-const Config = imports.misc.config;
 const CtrlAltTab = imports.ui.ctrlAltTab;
 const DND = imports.ui.dnd;
 const Layout = imports.ui.layout;
@@ -32,33 +31,6 @@ const BUTTON_DND_ACTIVATION_TIMEOUT = 250;
 const ANIMATED_ICON_UPDATE_TIMEOUT = 100;
 const SPINNER_ANIMATION_TIME = 0.2;
 
-const STANDARD_STATUS_AREA_ORDER = ['a11y', 'keyboard', 'volume', 'bluetooth', 'network', 'battery', 'userMenu'];
-const STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION = {
-    'a11y': imports.ui.status.accessibility.ATIndicator,
-    'volume': imports.ui.status.volume.Indicator,
-    'battery': imports.ui.status.power.Indicator,
-    'keyboard': imports.ui.status.keyboard.XKBIndicator,
-    'userMenu': imports.ui.userMenu.UserMenuButton
-};
-
-if (Config.HAVE_BLUETOOTH)
-    STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['bluetooth'] = imports.ui.status.bluetooth.Indicator;
-
-try {
-    STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['network'] = imports.ui.status.network.NMApplet;
-} catch(e) {
-    log('NMApplet is not supported. It is possible that your NetworkManager version is too old');
-}
-
-const GDM_STATUS_AREA_ORDER = ['a11y', 'display', 'keyboard', 'volume', 'battery', 'powerMenu'];
-const GDM_STATUS_AREA_SHELL_IMPLEMENTATION = {
-    'a11y': imports.ui.status.accessibility.ATIndicator,
-    'volume': imports.ui.status.volume.Indicator,
-    'battery': imports.ui.status.power.Indicator,
-    'keyboard': imports.ui.status.keyboard.XKBIndicator,
-    'powerMenu': imports.gdm.powerMenu.PowerMenuButton
-};
-
 // To make sure the panel corners blend nicely with the panel,
 // we draw background and borders the same way, e.g. drawing
 // them as filled shapes from the outside inwards instead of
@@ -983,14 +955,6 @@ const Panel = new Lang.Class({
         this._menus.addMenu(this._dateMenu.menu);
 
         /* right */
-        if (Main.sessionMode.sessionType == Shell.SessionType.GDM) {
-            this._status_area_order = GDM_STATUS_AREA_ORDER;
-            this._status_area_shell_implementation = GDM_STATUS_AREA_SHELL_IMPLEMENTATION;
-        } else {
-            this._status_area_order = STANDARD_STATUS_AREA_ORDER;
-            this._status_area_shell_implementation = STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION;
-        }
-
         Main.statusIconDispatcher.connect('status-icon-added', Lang.bind(this, this._onTrayIconAdded));
         Main.statusIconDispatcher.connect('status-icon-removed', Lang.bind(this, this._onTrayIconRemoved));
 
@@ -1122,9 +1086,9 @@ const Panel = new Lang.Class({
     },
 
     startStatusArea: function() {
-        for (let i = 0; i < this._status_area_order.length; i++) {
-            let role = this._status_area_order[i];
-            let constructor = this._status_area_shell_implementation[role];
+        for (let i = 0; i < Main.sessionMode.statusArea.order.length; i++) {
+            let role = Main.sessionMode.statusArea.order[i];
+            let constructor = Main.sessionMode.statusArea.implementation[role];
             if (!constructor) {
                 // This icon is not implemented (this is a bug)
                 continue;
@@ -1174,7 +1138,7 @@ const Panel = new Lang.Class({
     },
 
     _onTrayIconAdded: function(o, icon, role) {
-        if (this._status_area_shell_implementation[role]) {
+        if (Main.sessionMode.statusArea.implementation[role]) {
             // This icon is legacy, and replaced by a Shell version
             // Hide it
             return;
@@ -1185,7 +1149,7 @@ const Panel = new Lang.Class({
         let box = buttonBox.actor;
         box.add_actor(icon);
 
-        this._insertStatusItem(box, this._status_area_order.indexOf(role));
+        this._insertStatusItem(box, Main.sessionMode.statusArea.order.indexOf(role));
     },
 
     _onTrayIconRemoved: function(o, icon) {
index 3814d825c8508aab4d35bbdf92ce2dd04fcf252e..ed6eaa2e9a4ee8971824c1c1e7f7f61b615da415 100644 (file)
@@ -3,9 +3,31 @@
 const Lang = imports.lang;
 const Shell = imports.gi.Shell;
 
+const Config = imports.misc.config;
 const Main = imports.ui.main;
 const Params = imports.misc.params;
 
+
+const STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION = {
+    'a11y': imports.ui.status.accessibility.ATIndicator,
+    'volume': imports.ui.status.volume.Indicator,
+    'battery': imports.ui.status.power.Indicator,
+    'keyboard': imports.ui.status.keyboard.XKBIndicator,
+    'userMenu': imports.ui.userMenu.UserMenuButton
+};
+
+if (Config.HAVE_BLUETOOTH)
+    STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['bluetooth'] =
+        imports.ui.status.bluetooth.Indicator;
+
+try {
+    STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['network'] =
+        imports.ui.status.network.NMApplet;
+} catch(e) {
+    log('NMApplet is not supported. It is possible that your NetworkManager version is too old');
+}
+
+
 const DEFAULT_MODE = 'user';
 
 const _modes = {
@@ -19,6 +41,19 @@ const _modes = {
              hasWorkspaces: false,
              createSession: Main.createGDMSession,
              extraStylesheet: global.datadir + '/theme/gdm.css',
+             statusArea: {
+                 order: [
+                     'a11y', 'display', 'keyboard',
+                     'volume', 'battery', 'powerMenu'
+                 ],
+                 implementation: {
+                     'a11y': imports.ui.status.accessibility.ATIndicator,
+                     'volume': imports.ui.status.volume.Indicator,
+                     'battery': imports.ui.status.power.Indicator,
+                     'keyboard': imports.ui.status.keyboard.XKBIndicator,
+                     'powerMenu': imports.gdm.powerMenu.PowerMenuButton
+                 }
+             },
              sessionType: Shell.SessionType.GDM },
 
     'user': { hasOverview: true,
@@ -31,6 +66,13 @@ const _modes = {
               hasWorkspaces: true,
               createSession: Main.createUserSession,
               extraStylesheet: null,
+              statusArea: {
+                  order: [
+                      'a11y', 'keyboard', 'volume', 'bluetooth',
+                      'network', 'battery', 'userMenu'
+                  ],
+                  implementation: STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION
+              },
               sessionType: Shell.SessionType.USER }
 };